Java 19 的到来

2022 年 9 月 20 日 | 10分钟读完
萨拉特·钱德
Java SE 产品管理总监

­

­

Java 19 到来!

 

在 Twitter 上关注JavaOpenJDK

 

Oracle 很自豪地宣布 JDK 19 全面上市。此版本是按六个月发布周期按时交付的第十个功能版本。由于预期变化源源不断,这种程度的可预测性使开发人员能够轻松管理创新的采用。

 

 

Java 提高性能、稳定性和安全性的能力使其继续成为世界上最流行的编程语言。根据 IDC 报告,超过 1000 万开发人员(占全球全职开发人员的 75%)使用 Java。

 

JDK 19 现已推出!

 

Oracle 现在为开发人员、最终用户和企业提供 JDK 19 。 Oracle JDK 19 将按照Oracle Java SE 支持路线图中概述的Oracle 关键补丁更新 (CPU) 计划接收性能、​​稳定性和安全更新

 

Oracle JDK 19 不是长期支持 (LTS) 版本。 Oracle JDK 17(于 2021 年 9 月 14 日发布)是 2018 年宣布的发布节奏下的第二个 LTS。Oracle已宣布计划缩短未来 LTS 版本之间的时间,从三年缩短到两年,因此您应该期望下一个 LTS将于 2023 年 9 月发布 Java 21。

 

Oracle JDK 17 宣布的另一个重要变化是引入了新的、更简单的许可条款,该条款将允许公司至少在未来三年内免费使用 Oracle JDK 17,包括季度性能、稳定性和安全补丁。允许与下一个 LTS 版本重叠一整年。 Java SE 订阅者可以访问 Oracle 的 Java SE 支持和商业功能,例如 GraalVM Enterprise、Java 管理服务和高级管理控制台。有关新许可证的详细信息,  请参阅新 Java SE 许可条款博客。

 

Java 19,一起

 

与之前的版本一样,在 Java 19 中,我们继续庆祝 OpenJDK 社区中许多个人和组织的贡献 - 我们一起构建 Java!

 

JDK 19 修复率

JDK 版本随时间的变化率多年来基本保持不变,但在六个月的节奏下,生产就绪功能和改进的交付速度已大大提高。

 

我们不再像过去的主要版本那样每隔几年进行数以万计的修复并提供近百个 JEP(JDK 增强提案),而是按照更易于管理、可预测的六个月计划在更精简的功能版本中提供增强功能。这些变化范围从重要的新功能到日常维护、错误修复和文档改进的小增强。每个更改都在JDK Bug 系统中的单个问题的单个提交中表示。

 

在 GA 时,Java 11 到 Java 19 中标记为已修复的19,297 个JIRA 问题 中,有 13,825 个是由 Oracle 工作人员完成的,而 5,472 个是由个人开发人员和为其他组织工作的开发人员贡献的。仔细研究这些问题并整理受让人的组织数据,可以得出以下赞助 Java 贡献开发的组织图表:

图表、树状图 描述已自动生成

 

在 Java 19 中,在标记为已修复的 1,962 个 JIRA 问题中,有 1,383 个 由 Oracle 完成,而 579 个由 Java 社区的其他成员贡献。

Oracle 衷心感谢阿里巴巴、亚马逊、ARM、华为、IBM、英特尔、JetBrains、NTT Data、红帽、SAP 和腾讯等组织的开发人员做出的显着贡献。我们还很高兴看到 Bellsoft、DataDog、Loongson 和 Skymatic 等小型组织以及独立开发人员的贡献,他们总共贡献了 Java 19 中 6% 的修复。

 

我们同样感谢许多经验丰富的开发人员审查了提议的更改,尝试了早期访问版本并报告问题的早期采用者,以及在 OpenJDK 邮件列表上提供反馈的专业人士。 

 

以下人员提供了有关构建质量的宝贵反馈、记录了良好的质量错误或提供了频繁的更新:

 

  • 乌韦·辛德勒 (Apache Lucene)
  • Martin Grigorov(Apache Tomcat、Apache Wicket)
  • 拉斐尔·温特哈特 (Byte Buddy)
  • Yoann Rodière(Hibernate ORM、验证器、搜索、响应式)
  • 马克·霍夫曼(JaCoCo)
  • 卢卡斯·埃德 (JOOQ)

 

此外,通过质量外展计划,我们要感谢以下 FOSS 项目和个人,他们在测试 Java 19 早期访问版本方面提供了出色的反馈,以帮助提高发布的质量:

 

  • 阿帕奇德比 (Rick Hillegas)
  • Apache 动物园管理员(恩里科·奥利维利)
  • BNYM 代码卡塔斯 (Rinat Gatyatullin)
  • RxJava(大卫·卡诺克)
  • 阿帕奇约翰森
  • 作业运行器
  • MyBatis
  • 再生

 

Java 19 中的新功能

 

除了数千个性能、稳定性和安全更新之外,Java 19 还提供了数十个新功能和增强功能,其中七个增强功能/更改上升到通过JDK 增强提案 - JEP流程进行管理的级别,包括四个预览功能和两个孵化器功能。

 

一些不需要 JEP 的新功能包括新的 (D)TLS 签名方案、对 Unicode 14.0 的支持、附加日期时间格式和 AArch64 系统上的 PAC-RET 保护。这些以及许多其他新功能的完整详细信息可以在https://jdk.java.net/19/release-notes中找到。

 

JEP 预览功能是 Java SE 平台的完全指定和完全实现的语言或 VM 功能;但又是无常的。它们在 JDK 功能版本中提供,以便开发人员根据实际使用情况提供反馈,然后再在未来版本中永久保留。这也为工具供应商提供了在最终确定为 Java SE 标准之前致力于支持功能的机会。

 

JEP 孵化器模块允许将非最终 API 和非最终工具交给开发人员和用户,以收集反馈,最终提高 Java 平台的质量。

 

随 Java 19 提供的 7 个 JEP 分为四个类别,分别对应关键的长期 Java 技术项目和硬件支持。

 

琥珀计划

 

JEP 405 – 记录模式(预览)

通过扩展模式匹配来表达更复杂、可组合的数据查询,从而提高开发人员的工作效率。这是通过使用记录模式来解构记录值来增强 Java 编程语言来完成的。记录模式和类型模式可以嵌套,以实现强大的、声明性的、可组合形式的数据导航和处理。

 

JEP 405 涉及:

  • [JDK 19] JEP 427开关的模式匹配(第三次预览

 

JEP 427 – 开关的模式匹配(第三次预览

通过改进 Java 的代码语义来提高开发人员的工作效率。这是通过使用switch表达式和语句的模式匹配来增强 Java 编程语言来完成的。扩展模式匹配允许switch针对多个模式测试表达式,每个模式都有一个特定的操作,以便可以简洁、安全地表达复杂的面向数据的查询。

 

JEP 427 涉及:

  • [JDK 17] JEP 406开关的模式匹配(预览版)
  • [JDK 18] JEP 420交换机的模式匹配(第二预览版)
  • [JDK 19] JEP 405记录模式(预览)

 

 

巴拿马计划

 

JEP 424 - 外部函数和内存 API(预览)

外部函数和内存 API 通过四种独特的方式提供价值:

 

易于使用—用卓越的纯 Java 开发模型替换 Java 本机接口(JNI)

 

性能— 提供与 JNI 和sun.misc.Unsafe.

 

通用性- 提供在不同类型的外部内存(例如,本机内存、持久内存和托管堆内存)上进行操作的方法,并且随着时间的推移,可以适应其他平台(例如,32 位 x86)和用其他语言编写的外部函数优于 C(例如 C++、Fortran)。

 

安全- 允许程序对外部内存执行不安全的操作,但默认情况下会警告用户此类操作。

 

外部函数和内存 API 引入了一个 API,Java 程序可以通过该 API 与 Java 运行时之外的代码和数据进行互操作。通过有效地调用外部函数(即 JVM 外部的代码),并通过安全地访问外部内存(即不由 JVM 管理的内存),API 使 Java 程序能够调用本机库并处理本机数据,而不会造成脆弱性和危险。 JNI。

 

JEP 424 涉及:

  • [JDK 18] JEP 419外部函数和内存 API(第二个孵化器)
  • [JDK 17] JEP 412外部函数和内存 API(孵化器)

 

JEP 426 - 矢量 API(第四个孵化器)

提高性能,实现优于等效标量计算的性能。这是通过引入 API 来表达向量计算来完成的,该 API 在运行时可靠地编译为支持的 CPU 架构上的最佳向量指令,从而实现优于等效标量计算的性能。 Vector API 是在 JDK 16、17 和 18 中孵化的。JDK 19 纳入了这些版本用户的反馈以及性能改进和实现增强。它使用一些现在已经足够成熟的外部函数和内存 API 来创建这种依赖关系。

 

JEP 426 涉及:

  • [JDK 16] JEP 338矢量 API(孵化器)
  • [JDK 17] JEP 414Vector API(第二个孵化器)
  • [JDK 18] JEP 417Vector API(第三个孵化器)

 

 

织机计划

 

JEP 425 - 虚拟线程(预览)

虚拟线程是轻量级线程,可以大大减少编写、维护和观察高吞吐量并发应用程序的工作量。

 

Virtual Threads 是作为 Loom 项目一部分的第一个 JEP。 Project Loom 升级了 Java 并发模型,以满足当今大规模服务器应用程序的需求。

 

Java 的线程有很多优点。它们提供了一种自然的编程模型,具有可读的、使用用户理解的控制流运算符的顺序代码——循环、条件、异常。用户可以获得出色的调试和可服务性以及可读的堆栈跟踪。线程是操作系统调度的自然单位。我们希望保留这些优势。 

 

问题在于操作系统对线程的实现过于重量级。为每个连接启动一个线程需要很长时间,但更糟糕的是,操作系统在任何时候可以支持的线程数量限制了服务器可以处理的并发事务数量——远低于硬件或网络的容量——因此线程成为服务器吞吐量的严重限制因素。

 

许多人认为我们会接受所谓的“反应式”框架提供的异步编程风格。通过不直接将并发操作表示为线程,它确实超出了每个请求线程模型所带来的限制,但代价高昂——代码更加复杂,更难编写、更难阅读、更难调试或配置文件,因为平台的所有层及其工具都是围绕线程构建的。响应式可能是人们可以用当前 JVM 做的最好的事情,但我们的目标是做得更好,我们可以通过使线程更轻、更具可扩展性来做到这一点,让开发人员继续使用他们多年来一直成功使用的模型和工具。

 

如今,开发人员面临三个糟糕的选择:由于利用率不足而浪费硬件,通过较差的编程模型和可观察性来浪费程序员的精力,或者放弃 Java。因此,Project Loom 为开发人员提供了更好的选择。

 

Loom 项目时间表:

  • 2017 年底:Loom 工作开始
  • 2019 年 7 月:发布 Fiber 原型的 EA 版本以征求反馈
  • 2019 年 9 月:JEP 353 (重新实现旧版套接字 API)在 JDK 13 中发布
  • 2020 年 9 月:JEP 373 (重新实现旧版 DatagramSocket API)在 JDK 15 中发布
  • 2021 年 11 月:发布结构化并发支持的早期访问版本以征求反馈
  • 2021 年 11 月:发布虚拟线程和结构化并发 JEP 草案以征求意见
  • 2022 年 3 月:JEP 418 (互联网地址解析 SPI)在 JDK 18 中发布
  • 2022 年 9 月:JDK 19 中的预览

 

JEP 428 - 结构化并发(孵化器)

结构化并发通过引入结构化并发 API 来简化多线程编程。结构化并发将在不同线程中运行的多个任务视为单个工作单元,从而简化错误处理和取消、提高可靠性并增强可观察性。

新港

 

JEP 422 - Linux/RISC-V 端口

将 JDK 移植到 Linux/RISC-V 架构。RISC-V是一种免费开源的 RISC 指令集架构 (ISA),最初由加州大学伯克利分校设计,现在在RISC-V International的赞助下合作开发。它已经得到了广泛的语言工具链的支持。随着 RISC-V 硬件的可用性不断增加,JDK 的端口为开发人员提供了价值。

 

 

资源

 

Java 仍然是当今技术趋势的第一大编程语言。 Java 19 的按时交付改进表明,通过持续深思熟虑的规划和生态系统参与,Java 平台已为云中的现代开发和增长做好了准备。

 

通过以下方式继续了解最新新闻和更新:

 

  • 访问 Dev.java (Oracle 的专用门户,旨在提高您的 Java 知识和社区参与度)。
  • 访问 Inside.java (Oracle Java 团队的新闻和观点)。
  • 收听Inside.java 播客(由 Oracle 的 Java 开发人员直接为您提供的面向 Java 开发人员的音频节目。对话将讨论该语言、JVM、OpenJDK、平台安全性、Loom 和 Panan 等创新项目以及一切之间)。
  • 观看 Inside.java 新闻广播(将 Inside.Java 播客扩展为视频格式的视频节目)。
  • 在 YouTube 上观看Java (Oracle 的相关 Java 视频集合,可帮助您提高 Java 专业知识)。
  • 加入OpenJDK 邮件列表(了解您最喜欢的 OpenJDK 项目进展的地方)。
  • 在 Twitter 上关注OpenJDKJava (社交媒体提供有关 Java 不断发展的更新和新闻)。
  • 阅读 Java 杂志Oracle 的数字 Java 出版物,为开发人员提供由开发人员撰写的技术文章。

 

JavaOne 回来了!

 

随着 Java 技术创新的持续交付,Oracle 很自豪地再次举办 JavaOne,这是首屈一指的 Java 开发者大会。重新引入 JavaOne 证明了 Oracle 对其技术领先地位和社区管理的承诺。

 

在今年的会议期间,与会者将能够沉浸在多个 Java 19 相关会议中,内容涵盖与 Java 语言和平台、云、数据库、人工智能和机器学习、工具、DevOps、 Java 卡等。

 

在有限的时间内,开发者可以使用“INSIDEJAVA”促销代码获得 400.00 美元的零售价折扣。我们期待在今年的活动中见到您。立即注册:https://oracle.com/javaone

萨拉特·钱德

Java SE 产品管理总监

Sharat Chander 在 IT 行业工作了 20 年,曾就职于 Bell Atlantic、Verizon、Sun Microsystems 和 Oracle 等公司。他的背景和技术专长是 Java 开发工具、图形设计和产品/社区管理。 Chander 15 年来一直积极参与 Java 社区,帮助提高 Java 意识、接受度、采用和宣传。在 Oracle,作为 Java 开发人员关系总监,Chander 担任 JavaOne 会议内容主席,他担任该职位已有 7 年,负责推动会议中的技术内容策略和 Java 社区参与。他经常担任全球开发者计划的主题演讲者和参与者。 Chander 拥有马里兰大学企业金融学士学位和马里兰州洛约拉学院国际商务 MBA 学位。您可以在多个全球开发者活动和 Java 社区活动中找到 Chander。当爪哇的知名度不高时,他会追随他对棒球的其他热情,并狂热地追随他的家乡巴尔的摩金莺队。

推特账号:@Sharat_Chander

显示较少

上一篇文章

Java管理服务中引入Java运行时生命周期管理操作

三居·奈尔| 3分钟阅读

下一篇文章


JavaOne 更新系列:表演

查德·阿里村| 4分钟阅读